// 转换为时间
export function useFormatDuring(during: number) {
  if (!during) return "00:00";
  let duration = Math.floor(during / 1000);
  let minute: number | string = Math.floor(duration / 60);
  let second: number | string = Math.floor(duration % 60);
  if (minute < 10) {
    minute = `0${minute}`;
  }
  if (second < 10) {
    second = `0${second}`;
  }
  return `${minute}:${second}`;
}
// 防抖（Debounce）函数是一种在前端开发中常用的技术，用于减少函数执行的频率。它通过延迟函数的执行来实现这一点。当连续的事件（如键盘输入、滚动事件、窗口调整大小等）触发时，防抖函数确保只在事件的最后一次触发后的一段时间内执行目标函数。如果在这段延迟时间内事件再次被触发，则会重新开始计时。
// 下面是这个防抖函数的具体用途和工作原理：
// 用途：
// 提高性能：在处理频繁触发的事件（如输入框内容检查、窗口大小调整、滚动等）时，减少不必要的计算和资源消耗。
// 避免多次请求：比如在用户输入搜索词时，只在用户停止输入后才发起搜索请求，避免了不必要的请求。
// 用户体验：在某些操作中（如连续点击按钮），防止函数被过于频繁执行，从而提升用户体验。
// 工作原理：
// debounce 函数接收两个参数：一个是要执行的目标函数 func 和一个延迟时间 delay。
// 当事件被触发时，它会先使用 clearTimeout 函数取消之前的延时调用（如果存在）。
// 然后，它使用 setTimeout 设置一个新的延时调用，如果在这段延迟时间内事件没有再次被触发，则在延迟结束后执行目标函数 func。
// 如果在延迟期间事件再次被触发，则 clearTimeout 会取消掉之前的延时调用，并且 setTimeout 会重新开始计时。
// 在你的代码示例中，debounce 函数内部创建了一个闭包，记住了 timer 变量。这使得每次事件触发时，都可以访问和操作相同的 timer，从而控制函数 func 的执行。
// 这个防抖函数的实现还考虑了函数的上下文（this）和参数（arguments），确保在延迟执行目标函数时，这些信息能够正确地传递给它。
// 防抖
export function debounce(func: Function, delay: number) {
  let timer: number | null;
  return function () {
    const context = this;
    const args = arguments;
    clearTimeout(timer as number);
    timer = setTimeout(() => {
      func.apply(context, args);
    }, delay);
  };
}
//获取真实调用的url地址
export function getUrl(url: string) {
  return `http://192.168.31.243:8080${url}`;
}

// 格式化歌词
export function formatLyric(lyricStr: string) {
  let lyricArr = lyricStr.split(/[(\r\n)\r\n]+/).map((item: string) => {
    const min = item.slice(1, 3); // 分
    const sec = item.slice(4, 6); // 秒
    let mill: number | string = Number(item.slice(7, 10));
    let lrc = item.slice(11, item.length);
    // 如果毫秒为两位
    if (isNaN(Number(mill))) {
      mill = Number(item.slice(7, 9)) * 10;
      lrc = item.slice(10, item.length);
    }
    // 统计每段歌词出现的时间
    const time = parseInt(min) * 60 * 1000 + parseInt(sec) * 1000 + mill;
    return { time, lrc, next: 0 };
  });
  // 每个歌词记录下一句歌词出现时间
  lyricArr.forEach((item, i) => {
    if (i === lyricArr.length - 1 || isNaN(lyricArr[i + 1].time)) {
      // 异常歌词显示到下下句 或者直接只显示1.5s
      item.next = lyricArr[i + 2] ? lyricArr[i + 2].time : item.time + 1500;
    } else {
      item.next = lyricArr[i + 1].time;
    }
  });
  return lyricArr;
}
//表格时间格式化
export function formatDate(cellValue: any) {
  if (cellValue == null || cellValue == "") return "";
  const date = new Date(cellValue);
  const year = date.getFullYear();
  const month =
    date.getMonth() + 1 < 10
      ? "0" + (date.getMonth() + 1)
      : date.getMonth() + 1;
  const day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
  const hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
  const minutes =
    date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
  const seconds =
    date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
  return (
    year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds
  );
}
// 地区选择
export const AREA = [
  {
    value: "北京",
    label: "北京",
  },
  {
    value: "天津",
    label: "天津",
  },
  {
    value: "河北",
    label: "河北",
  },
  {
    value: "山西",
    label: "山西",
  },
  {
    value: "内蒙古",
    label: "内蒙古",
  },
  {
    value: "辽宁",
    label: "辽宁",
  },
  {
    value: "吉林",
    label: "吉林",
  },
  {
    value: "黑龙江",
    label: "黑龙江",
  },
  {
    value: "上海",
    label: "上海",
  },
  {
    value: "江苏",
    label: "江苏",
  },
  {
    value: "浙江",
    label: "浙江",
  },
  {
    value: "安徽",
    label: "安徽",
  },
  {
    value: "福建",
    label: "福建",
  },
  {
    value: "江西",
    label: "江西",
  },
  {
    value: "山东",
    label: "山东",
  },
  {
    value: "河南",
    label: "河南",
  },
  {
    value: "湖北",
    label: "湖北",
  },
  {
    value: "湖南",
    label: "湖南",
  },
  {
    value: "广东",
    label: "广东",
  },
  {
    value: "广西",
    label: "广西",
  },
  {
    value: "海南",
    label: "海南",
  },
  {
    value: "重庆",
    label: "重庆",
  },
  {
    value: "四川",
    label: "四川",
  },
  {
    value: "贵州",
    label: "贵州",
  },
  {
    value: "云南",
    label: "云南",
  },
  {
    value: "西藏",
    label: "西藏",
  },
  {
    value: "陕西",
    label: "陕西",
  },
  {
    value: "甘肃",
    label: "甘肃",
  },
  {
    value: "青海",
    label: "青海",
  },
  {
    value: "宁夏",
    label: "宁夏",
  },
  {
    value: "新疆",
    label: "新疆",
  },
  {
    value: "香港",
    label: "香港",
  },
  {
    value: "澳门",
    label: "澳门",
  },
  {
    value: "台湾",
    label: "台湾",
  },
];
